package cn.edu.sgu.www.mhxysy.service.wenshi;

import cn.edu.sgu.www.mhxysy.vo.Imager;
import cn.edu.sgu.www.mhxysy.pager.Pager;
import cn.edu.sgu.www.mhxysy.dto.wenshi.WenshiDTO;
import cn.edu.sgu.www.mhxysy.dto.wenshi.ZuoqiWenshiDTO;
import cn.edu.sgu.www.mhxysy.entity.wenshi.Wenshi;
import cn.edu.sgu.www.mhxysy.vo.wenshi.WenshiVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface WenshiService {

	/**
	 * 克隆纹饰
	 * @param wenshiId 纹饰ID
	 */
	@Transactional(rollbackFor = Exception.class)
	void clone(String wenshiId);

	/**
	 * 镶嵌纹饰
	 * @param zuoqiWenshiDTO 镶嵌信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void inlay(ZuoqiWenshiDTO zuoqiWenshiDTO);

	/**
	 * 添加纹饰
	 * @param wenshiDTO 纹饰信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void insert(WenshiDTO wenshiDTO);

	/**
	 * 通过ID删除纹饰
	 * @param wenshiId 纹饰ID
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteById(String wenshiId);

	/**
	 * 通过ID修改纹饰信息
	 * @param wenshiDTO 纹饰信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void updateById(WenshiDTO wenshiDTO);

	/**
	 * 通过ID查询纹饰详情信息
	 * @param wenshiId 纹饰ID
	 * @return WenshiVO
	 */
	WenshiVO selectDetail(String wenshiId);

	/**
	 * 通过坐骑ID查询纹饰图片
	 * @param zuoqiId 坐骑ID
	 * @return List<Imager>
	 */
	List<Imager> selectByZuoqiId(String zuoqiId);

	/**
	 * 分页查询纹饰列表
	 * @param pager 分页参数
	 * @return Page<Wenshi>
	 */
	Page<Wenshi> selectByPage(Pager<Wenshi> pager);

	/**
	 * 通过状态查询纹饰
	 * @param categoryId 纹饰类型ID
	 * @return List<WenshiVO>
	 */
	List<WenshiVO> selectDetails(Integer categoryId);
}